/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.si.sistema.model;

import br.ufc.si.config.HibernateUtil;
import br.ufc.si.sistema.to.ProfessorOrientadorTO;
import org.hibernate.criterion.*;
import org.hibernate.*;
import java.util.*;

public class ProfessorOrientadorDAO {
    private ProfessorOrientadorTO po = new ProfessorOrientadorTO();
    private List<ProfessorOrientadorTO> listapo;
    private String prefixo;
    
    public String getPrefixo() {
	return prefixo;
    }

    public void setPrefixo(String prefixo) {
	this.prefixo = prefixo;
    }

  
    /**
     * @return the po
     */
    public ProfessorOrientadorTO getPo() {
        return po;
    }

    /**
     * @param po the po to set
     */
    public void setPo(ProfessorOrientadorTO po) {
        this.po = po;
    }
public void limparCampos() throws HibernateException{  
		po.setCidade("");
		po.setCpf(0);
		po.setDepartamento("");
		po.setEmail("");
		po.setEndereco("");
		po.setNome("");
		po.setRg("");
		po.setSenha("");
                po.setSiape(0);
                po.setTelefone(0);
                po.setUnidade_academica("");
		
}  
   
public String inserir() throws HibernateException{  
        Transaction tx = null;  
        Session session = null;  
        try{  
            session = HibernateUtil.getSession();
            tx = session.beginTransaction();  
            session.save(po);  
            tx.commit();  
            return "listarpo";
        }catch (HibernateException e){  
            tx.rollback();  
        }finally{  
            session.close();  
        }         
    return "";
}  
   
public String atualizar() throws HibernateException{  
        Transaction tx = null;  
        Session session = null;  
        try{  
            session = HibernateUtil.getSession();
            tx = session.beginTransaction();  
            session.update(po);  
            tx.commit();     
            return "listarpo";
        }catch (HibernateException e){  
            tx.rollback();  
        }finally{  
            session.close();  
        }         
     return "";
}  
   
public String deletar() throws HibernateException {  
    Session session = null; 
    Transaction tx = null;  
    try{  
        session = HibernateUtil.getSession(); 
        tx = session.beginTransaction();      
        session.delete(po);      
        tx.commit();       
        return "listarpo";
    }catch (HibernateException e){  
        tx.rollback();  
    }finally{  
        session.close();  
    }  
     return "";
}       

public String buscaPorNome() throws HibernateException{
    Session session = HibernateUtil.getSession();
    Transaction tx = session.beginTransaction();
    try {
        prefixo = "%"+ prefixo + "%";
        Criteria c = session.createCriteria(ProfessorOrientadorTO.class);
        c.add(Restrictions.ilike("nome", prefixo) );

        c.addOrder(Order.asc("nome"));
        List<ProfessorOrientadorTO> lista = c.list();
        setListapo(lista);
        prefixo = "";
        return "listarbuscapo";
    } catch (Exception e) {
		} finally {
			tx.commit();
			session.close();
		}
		return null;
  }

public Collection<ProfessorOrientadorTO> listarTodos() throws HibernateException{
    Session session =  session = HibernateUtil.getSession(); 
    Transaction tx =  session.beginTransaction();  
    Criteria c = session.createCriteria(ProfessorOrientadorTO.class); 
    try {
       c.addOrder(Order.asc("nome"));
       List<ProfessorOrientadorTO> lista = c.list();
       setListapo(lista);
       prefixo = "";
       return getListapo();
    } catch (Exception e) {
		} finally {
			tx.commit();
			session.close();
		}
		return null;
}

    /**
     * @return the listapo
     */
    public List<ProfessorOrientadorTO> getListapo() {
        return listapo;
    }

    /**
     * @param listapo the listapo to set
     */
    public void setListapo(List<ProfessorOrientadorTO> listapo) {
        this.listapo = listapo;
    }


}
